home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amoszine 7
/
Amoszine 7 (Disk 3 of 3).adf
/
ARCHIVES
/
Oldie_Game_2.lha
/
galacticgabby
/
autoexec.amos
/
autoexec.amosSourceCode
next >
Wrap
AMOS Source Code
|
1992-03-06
|
10KB
|
378 lines
'TITLE START
'
'
'Dir$="df0:"
Screen Open 0,320,256,32,Lowres
Hide On : Flash Off : Curs Off : Cls 0
Sam Play 15,2,9500
_COPYRIGHT[75]
Wait 50
For V=0 To 63
Mvolume V : Wait Vbl
Music 1
Next V
Procedure _SMALL_COPYRIGHT[YDISPLAY]
'
Auto View Off
'
Screen Open 7,320,24,16,0 : Curs Off : Flash Off : Cls 0
Screen Display 7,,-100,,
Paste Bob 260,3,1
Paper 0 : Pen 4 : Print At(1,1);"This program was written using"
Get Sprite Palette
View : Wait Vbl
'
For Y=1 To Screen Height/2
Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
Screen Offset 7,,Screen Height/2-Y
View : Wait Vbl
Next
'
Wait 100
'
For Y=Screen Height/2 To 0 Step -1
Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
Screen Offset 7,,Screen Height/2-Y
View : Wait Vbl
Next
'
Screen Close 7
Auto View On
'
End Proc
Procedure _COPYRIGHT[YDISPLAY]
'
Auto View Off
'
Unpack 10 To 7
'
For Y=2 To Screen Height/2 Step 2
Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
Screen Offset 7,,Screen Height/2-Y
View
Wait Vbl
Next
Wait 200
'
Sam Play 15,2,9500
Wait 100
For Y=Screen Height/2 To 0 Step -8
Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
Screen Offset 7,,Screen Height/2-Y
View
Wait Vbl
Next
'
Screen Close 7
Auto View On
'
End Proc
'
'
Unpack 2 To 0
Screen Open 1,320,256,32,Lowres
Cls 0 : Flash Off : Get Palette 0
Appear 0 To 1,103 : Wait 200
Load "sprites/titl1.abk"
Fade 1,$0,$0,$0
Wait 50 : Fade 1,$0,$0,$0,$0
Wait 50
Fade 1
Wait 50
Screen Close 0 : Cls 0
Wait Vbl
'
'
Screen Open 3,640,400,4,Hires
Screen Hide 3
Cls 0
Hide On
Curs Off : Flash Off : Cls 0 : Paper 0 : Pen 2
Bob Clear
Bob 1,190,20,1
Locate 6,9 : Print " Galactic Gabby is (YES) a clone of space invaders."
Print
Print " If you score 5000 you will get a bonus of 1000 points "
Print " If you clear 11 levels you get a bonus of 5000 points "
Print " + 1 extra life. "
Print
Print " You start the game with 3 lives "
Print
Print
Print
Print " USE YOUR JOYSTICK TO MOVE LEFT,RIGHT AND TO FIRE "
Print
Print " PRESS FIRE TO PLAY "
Print " ****************** "
Print
Print
Print " programmed by Nigel Riding, 42 Bleasdale ave, "
Print " Thorton, "
Print " Cleveleys, "
Print " Blackpool, "
Print " Lancs. "
Screen Open 2,640,400,4,Hires
Cls 0
Appear 3 To 2,1
Repeat : Until Fire(1) : Fade 1 : Wait 1*15 : Music Off : Screen Close 3 : Screen Close 2
'
'
'
'TITLE FINISH
'
'MAIN GAME
'
'
Erase 1
Bob Clear
Screen Open 0,320,256,16,Lowres
Curs Off : Hide On : Cls 0 : Flash Off
Load "sprites/main.abk",1
Double Buffer
Get Sprite Palette
'
Make Mask 5 : Make Mask 6
Dim X(20),Y(20),ALIENDEAD(20)
Global X(),Y(),WHERETO,SPEED,SEP,X,N0,S0,ALIENDEAD(),ALIVE,SHIELDS
Global LEVEL,SCORE,ALIENSHOT,SHOT,SHOTY,SHOTX,HISORMINE,LIVES
Global NEWSHOT,ALIENSHOTX,ALIENSHOTY,SHIELD1,SHIELD2,SHIELD3
'
N0=1 : X=150 : S0=5 : SHOTX=0 : SHOTY=150 : SHOT=0 : LIVES=3
LEVEL=0 : SCORE=0 : ALIENSHOTX=0 : NEWSHOT=0 : ALIENSHOT=0 : ALIENSHOTY=0
'
Ink 9,0 : Paper 0 : Pen 3
'
For COUNT=1 To 20
Hot Spot COUNT,$11
Next COUNT
'
Proc _MAIN
'
Procedure _MAIN
Sam Play 1
Ink 15
For X=1 To 40
Plot Rnd(320),Rnd(200)
Next X
SHIELDS=-1 : SEP=0 : ALIVE=20 : SPEED=1 : WHERETO=5 : Add LEVEL,1
MOVE=0 : SHIELD1=0 : SHIELD2=0 : SHIELD3=0 : HISORMINE=0
For COUNT=1 To 20
Read X(COUNT),Y(COUNT) : ALIENDEAD(COUNT)=COUNT
If LEVEL=12 Then LEVEL=1 : SCORE=SCORE+2000 : LIVES=LIVES+1 : Sam Play 11 : Wait 80
If SCORE=5000 Then SCORE=SCORE+1000 : Sam Play 11 : Wait 80
If LEVEL<=12
Y(COUNT)=Y(COUNT)+((LEVEL-1)*9)
Else Y(COUNT)=Y(COUNT)+110
End If
Next COUNT
If LEVEL<=12 Then Bob 23,50,215,11 : Bob 24,150,215,11 : Bob 25,250,215,11
Ink 9,0 : Paper 0 : Pen 1
Locate 9,0 : Print "WAVE ";LEVEL;" 1UP";SCORE
Sam Play 8 : Wait 50
'
Data 10,20,40,20,70,20,100,20,130,20
Data 10,45,40,45,70,45,100,45,130,45
Data 10,70,40,70,70,70,100,70,130,70
Data 10,95,40,95,70,95,100,95,130,95
'
Do
Bob Update Off
Add N0,1,1 To 4
If ALIENSHOT=1 Then Proc _ALIENSHOT
If ALIENSHOT=0 Then NEWSHOT=1 : Proc _ALIENSHOT
If Jleft(1) Then Add X,-6
If Jright(1) Then Add X,6
If S0=6
S0=5
Else S0=6
End If
If X<15 Then X=15
If X>290 Then X=290
Sprite 0,X Hard(X),Y Hard(240),S0
If LIVES>=3
Sprite 2,X Hard(10),Y Hard(10),S0
End If
If LIVES>=2
Sprite 4,X Hard(30),Y Hard(10),S0
End If
If LIVES>=1
Sprite 6,X Hard(50),Y Hard(10),S0
End If
'
Bob Update
If Bob Col(21,1 To 20) Then SHOT=0 : SHOTY=0 : Bob Off 21 : Proc _GOTONE
If Spritebob Col(0,1 To 20) Then LIVES=0 : Proc _DEAD
If Spritebob Col(0,22 To 22) Then Proc _DEAD
If Bob Col(22,23 To 25) Then Proc _GOTSHIELD
If Bob Col(21,23 To 25) Then HISORMINE=-1 : Proc _GOTSHIELD
Proc _XMOVE
If Fire(1) and SHOT=0 Then Sam Play 7 : SHOT=1
If SHOT=1 Then Proc _MYSHOT
If SHOT=0 Then SHOTX=X
Loop
End Proc
'
Procedure _XMOVE
For COUNT=1 To 20
If WHERETO=5
Add X(COUNT),SPEED
Else Add X(COUNT),-SPEED
End If
If ALIENDEAD(COUNT)<>0 and X(COUNT)>=310 Then MOVE=-1
If ALIENDEAD(COUNT)<>0 and X(COUNT)<=10 Then MOVE=-1
If ALIENDEAD(COUNT)<>0 Then Bob COUNT,X(COUNT),Y(COUNT),N0
Next COUNT
If MOVE Then MOVE=0 : Proc _YMOVE
End Proc
'
Procedure _YMOVE
If WHERETO=5
WHERETO=-5
Else WHERETO=5
End If
For COUNT=1 To 20
Add Y(COUNT),5
Next COUNT
If SHIELDS
For COUNT=1 To 20
If ALIENDEAD(COUNT)<>0 and Y(COUNT)>180
If SHIELDS
For COUNT1=1 To 5
If SHIELD1<>0
Sam Play 6 : Bob 23,50,215,COUNT1+14
End If
If SHIELD2<>0
Sam Play 6 : Bob 24,150,215,COUNT1+14
End If
If SHIELD3<>0
Sam Play 6 : Bob 25,250,215,COUNT1+14
End If
Bob Update : Wait 5
Next COUNT1
Bob Off 23 : Bob Off 24 : Bob Off 25 : SHIELDS=0
End If
End If
Next COUNT
End If
End Proc
'
Procedure _DEAD
Bob Off 22
Dec LIVES
Sprite Off 0
Sam Play 5
For DEAD=7 To 10
Bob 21,X,230,DEAD : Wait 5
Bob Update
Next DEAD
Wait 20
Sprite Off
If LIVES=<0
Bob Off : Fade 1 : Wait 1*15 : Load Iff "end.iff",0 : Wait 20 : Sam Play 9 : Wait 160 : Music 1
Screen Open 1,320,256,32,Lowres
Curs Off : Flash Off
Load Iff "scorend.iff",1
Screen Hide 1
Appear 1 To 0,1
Screen Close 1
Paper 0 : Pen 6 : Locate 18,15 : Print " ";SCORE : Wait 50
Locate 16,25 : Print "Y" : Locate 26,25 : Print "N"
Clear Key
TEST:
If Inkey$="y"
Fade 1 : Wait 1*15 : Cls 0 : LEVEL=0 : LIVES=3 : SCORE=0 : Music Off : Get Sprite Palette : Double Buffer : Proc _MAIN
End If
If Inkey$="n"
Fade 1 : Music Off : Wait 1*15
End
End If
Goto TEST
Else Bob Off 21
End If
End Proc
'
Procedure _GOTONE
For COUNT=1 To 20
If Col(COUNT)
Bob COUNT,X(COUNT),Y(COUNT),14 : Sam Play 4
Bob Update : ALIENDEAD(COUNT)=0 : Bob Off COUNT : Wait Vbl
End If
Next COUNT
Dec ALIVE : SCORE=SCORE+50
SCORE$=Str$(SCORE) : Text 209,6,SCORE$
SPEED=Int(Abs(ALIVE-20)/2+1)
If ALIVE=0
Sprite Off 0 : Bob Off : Pen 6 : Locate 13,13 : Print "WAVE ";LEVEL
Locate 21,13 : Print "CLEARED" : Wait 180
Cls 0 : ALIENSHOT=0 : Proc _MAIN
End If
End Proc
'
Procedure _GOTSHIELD
If HISORMINE
HISORMINE=0 : GOB=21 : SHOT=0 : SHOTY=-1
Else GOB=22
End If
If Bob Col(23)
Inc SHIELD1 : Bob 23,50,215,SHIELD1+14 : Bob Off GOB : NEWSHOT=1
Sam Play 6 : Wait Vbl
If SHIELD1=5
Bob 23,50,215,19 : Bob Update : Wait Vbl : Bob 23,50,215,20
Sam Play 4 : Bob Update : Wait 10 : Bob Off 23 : SHIELD1=0 : Bob Off GOB
NEWSHOT=1
End If
End If
If Bob Col(24)
Inc SHIELD2 : Bob 24,150,215,SHIELD2+14 : Bob Off GOB : NEWSHOT=1
Sam Play 6 : Wait Vbl
If SHIELD2=5
Bob 24,150,215,19 : Bob Update : Wait Vbl : Bob 24,150,215,20
Sam Play 4 : Bob Update : Wait 10 : Bob Off 24 : SHIELD2=0 : Bob Off GOB
NEWSHOT=1
End If
End If
If Bob Col(25)
Inc SHIELD3 : Bob 25,250,215,SHIELD3+14 : Bob Off GOB : NEWSHOT=1
Sam Play 6 : Wait Vbl
If SHIELD3=5
Bob 25,250,215,19 : Bob Update : Wait Vbl : Bob 25,250,215,20
Sam Play 4 : Bob Update : Wait 10 : Bob Off 25 : SHIELD3=0 : Bob Off GOB
NEWSHOT=1
End If
End If
If SHIELD1=0 and SHIELD2=0 and SHIELD3=0 Then SHIELDS=0
End Proc
'
Procedure _ALIENSHOT
If NEWSHOT=1 : Sam Play 10
NEWSHOT=0 : ALIEN=(Rnd(4))+16
If ALIENDEAD(ALIEN)=0
If ALIENDEAD(ALIEN-5)=0
Add ALIEN,-10
End If
If ALIENDEAD(ALIEN)=0
Add ALIEN,-5
End If
If ALIENDEAD(ALIEN)=0
ALIENSHOT=0 : ALIEN=0
End If
End If
If ALIEN<>0
ALIENSHOTX=X(ALIEN) : ALIENSHOTY=Y(ALIEN)+5
ALIENSHOT=1
End If
End If
If ALIENSHOTY<=240 and ALIENSHOT=1
Bob 22,ALIENSHOTX,ALIENSHOTY,13
Add ALIENSHOTY,12
Else Bob Off 22 : ALIENSHOT=0
End If
End Proc
'
Procedure _MYSHOT
SHOTY=SHOTY-20
Bob 21,SHOTX,SHOTY,12
If SHOTY<=0
SHOTX=0 : SHOTY=240 : SHOT=0 : Bob Off 21
End If
End Proc